package controlador;

import javax.swing.JButton;
import javax.swing.JToolBar;

import vista.botones.BuilderBoton;
import vista.botones.BuilderBotonBarraMenu;
import vista.ventanas.VentanaEditor;


import eventos.EventoPegar;
import eventos.abrir.EventoAbrirVentanaEntidadNueva;
import eventos.abrir.EventoAbrirVentanaEntidadesExistentes;
import eventos.abrir.EventoAbrirVentanaJerarquia;
import eventos.abrir.EventoAbrirVentanaRelacion;
import eventos.abrir.EventoCrearDiagramaHijoVacio;
import eventos.barraMenu.EventoDeshacer;
import eventos.barraMenu.EventoExportarGIF;
import eventos.barraMenu.EventoExportarJPG;
import eventos.barraMenu.EventoExportarPNG;
import eventos.barraMenu.EventoGuardarProyecto;
import eventos.barraMenu.EventoImprimir;
import eventos.barraMenu.EventoMostrarAyuda;
import eventos.barraMenu.EventoRehacer;
import eventos.barraMenu.EventoRotarHoja;
import eventos.barraMenu.EventoSalirGuardando;
import eventos.barraMenu.EventoUnZoomDiagrama;
import eventos.barraMenu.EventoValidarDiagrama;
import eventos.barraMenu.EventoValidarTodo;
import eventos.barraMenu.EventoZoomDiagrama;

@SuppressWarnings("serial")
public class InicializadorDeBotonesDeOpcion extends JToolBar{
	
	private static final String PATH_GUARDAR = "../imagenes/guardar32.png";
	private static final String PATH_IMPRIMIR= "../imagenes/imprimir32.png";
	private static final String PATH_EXPORTAR_JPG = "../imagenes/exportarJPG32.png";
	private static final String PATH_EXPORTAR_GIF = "../imagenes/exportarGIF32.png";
	private static final String PATH_EXPORTAR_PNG = "../imagenes/exportarPNG32.png";
	private static final String PATH_PEGAR = "/vista/imagenes/pegar32.png";
	private static final String PATH_ENTIDAD_EXISTENTE = "../imagenes/entidad32.png";
	private static final String PATH_ENTIDAD_NUEVA = "../imagenes/entidadNueva32.png";
	private static final String PATH_RELACION = "../imagenes/relacion32.png";
	private static final String PATH_JERARQUIA = "../imagenes/jerarquia32.png";
	private static final String PATH_DIAGRAMA= "../imagenes/diagramaHijo32.png";
	private static final String PATH_VALIDAR_PROYECTO = "../imagenes/validarProyecto32.png";
	private static final String PATH_VALIDAR_DIAGRAMA = "../imagenes/validarDiagrama32.png";
	private static final String PATH_ZOOM= "../imagenes/zoom32.png";
	private static final String PATH_UNZOOM= "../imagenes/zoomOut32.png";
	private static final String PATH_DESHACER= "../imagenes/deshacer32.png";
	private static final String PATH_REHACER= "../imagenes/rehacer32.png";
	private static final String PATH_ROTAR_HOJA = "../imagenes/rotarHoja32.png";
	private static final String PATH_AYUDA = "../imagenes/ayuda32.png";
	private static final String PATH_SALIR = "../imagenes/salir32.png";

	
	private static JButton OP_GUARDAR;
	private static JButton OP_IMPRIMIR;
	private static JButton OP_EXPORTAR_JPG;
	private static JButton OP_EXPORTAR_GIF;
	private static JButton OP_EXPORTAR_PNG;
	private static JButton OP_PEGAR;
	private static JButton OP_ENTIDAD_EXISTENTE;
	private static JButton OP_ENTIDAD_NUEVA;
	private static JButton OP_RELACION;
	private static JButton OP_JERARQUIA;
	private static JButton OP_DIAGRAMA;
	private static JButton OP_VALIDAR_PROYECTO;
	private static JButton OP_VALIDAR_DIAGRAMA;
	private static JButton OP_ZOOM;
	private static JButton OP_UNZOOM;
	private static JButton OP_REHACER;
	private static JButton OP_DESHACER;
	private static JButton OP_ROTAR_HOJA;
	private static JButton OP_AYUDA;
	private static JButton OP_SALIR;
		
	public InicializadorDeBotonesDeOpcion()
	{
		super();
		this.crearBotones();
	}

    private void crearBotones()
    {
    	BuilderBoton constructor = new BuilderBotonBarraMenu();
		
		OP_GUARDAR = constructor.crearBoton("Guardar Diagrama", PATH_GUARDAR);
		OP_IMPRIMIR = constructor.crearBoton("Imprimir Diagrama", PATH_IMPRIMIR);
		OP_EXPORTAR_JPG = constructor.crearBoton("Exportar Diagrama a JPG", PATH_EXPORTAR_JPG);
		OP_EXPORTAR_GIF = constructor.crearBoton("Exportar Diagrama a GIF", PATH_EXPORTAR_GIF);
		OP_EXPORTAR_PNG = constructor.crearBoton("Exportar Diagrama a PNG", PATH_EXPORTAR_PNG);
		OP_PEGAR = constructor.crearBoton("Pegar objeto", PATH_PEGAR);
		OP_ENTIDAD_EXISTENTE = constructor.crearBoton("Entidades Existentes", PATH_ENTIDAD_EXISTENTE);
		OP_ENTIDAD_NUEVA = constructor.crearBoton("Crear Entidad Nueva", PATH_ENTIDAD_NUEVA);
		OP_RELACION = constructor.crearBoton("Crear Relacion", PATH_RELACION);
		OP_JERARQUIA = constructor.crearBoton("Crear Jerarquia", PATH_JERARQUIA);
		OP_DIAGRAMA = constructor.crearBoton("Crear Diagrama Hijo", PATH_DIAGRAMA);
		OP_VALIDAR_PROYECTO = constructor.crearBoton("Validar Proyecto", PATH_VALIDAR_PROYECTO);
		OP_VALIDAR_DIAGRAMA = constructor.crearBoton("Validar Diagrama", PATH_VALIDAR_DIAGRAMA);
		OP_ZOOM = constructor.crearBoton("Zoom", PATH_ZOOM);
		OP_UNZOOM = constructor.crearBoton("Unzoom", PATH_UNZOOM);
		OP_ROTAR_HOJA = constructor.crearBoton("Rotar Hoja", PATH_ROTAR_HOJA);
		OP_DESHACER = constructor.crearBoton("Deshacer", PATH_DESHACER);
		OP_REHACER = constructor.crearBoton("Rehacer", PATH_REHACER);
		OP_AYUDA = constructor.crearBoton("Ver ayuda", PATH_AYUDA);
		OP_SALIR = constructor.crearBoton("Salir del Editor", PATH_SALIR);
    }    
    
    public void agregarBotones(VentanaEditor ventana)
    {
    	JToolBar barra = ventana.getToolBar();
    	
    	barra.add(OP_GUARDAR);
    	barra.add(OP_IMPRIMIR);
    	barra.add(OP_EXPORTAR_GIF);
    	barra.add(OP_EXPORTAR_JPG);
    	barra.add(OP_EXPORTAR_PNG);
    	barra.addSeparator();

    	barra.add(OP_PEGAR);
    	barra.addSeparator();
    	
    	barra.add(OP_DESHACER);
    	barra.add(OP_REHACER);
    	barra.addSeparator();
    	
    	barra.add(OP_ENTIDAD_EXISTENTE);
    	barra.add(OP_ENTIDAD_NUEVA);
    	barra.add(OP_RELACION);
    	barra.add(OP_JERARQUIA);
    	barra.add(OP_DIAGRAMA);
    	barra.addSeparator();
    	
    	barra.add(OP_VALIDAR_PROYECTO);
    	barra.add(OP_VALIDAR_DIAGRAMA);
    	barra.addSeparator();
    	
    	barra.add(OP_ZOOM);
    	barra.add(OP_UNZOOM);
    	barra.add(OP_ROTAR_HOJA);
    	barra.addSeparator();
    	
//    	barra.add(OP_AYUDA);
    	barra.add(OP_SALIR);
    		
    }
    
    public void escucharEventos(VentanaEditor contenedor, ControladorEditor controlador)
    {
    	OP_GUARDAR.addMouseListener(new EventoGuardarProyecto(controlador));
    	OP_PEGAR.addMouseListener(new EventoPegar(controlador));
    	
    	OP_DESHACER.addMouseListener(new EventoDeshacer(controlador.getControladorDeAcciones()));
    	OP_REHACER.addMouseListener(new EventoRehacer(controlador.getControladorDeAcciones()));
    	
    	OP_ENTIDAD_EXISTENTE.addMouseListener(new EventoAbrirVentanaEntidadesExistentes(contenedor, controlador));
    	OP_ENTIDAD_NUEVA.addMouseListener(new EventoAbrirVentanaEntidadNueva(contenedor, controlador, controlador, controlador));
    	OP_RELACION.addMouseListener(new EventoAbrirVentanaRelacion(contenedor, controlador, controlador));
    	OP_JERARQUIA.addMouseListener(new EventoAbrirVentanaJerarquia(contenedor, controlador));
    	OP_DIAGRAMA.addMouseListener(new EventoCrearDiagramaHijoVacio(contenedor));
    	
    	OP_SALIR.addMouseListener(new EventoSalirGuardando());
    	
    	OP_UNZOOM.addMouseListener(new EventoUnZoomDiagrama(contenedor));
    	OP_ZOOM.addMouseListener(new EventoZoomDiagrama(contenedor));
    	OP_ROTAR_HOJA.addMouseListener(new EventoRotarHoja(contenedor));
    	
    	OP_EXPORTAR_JPG.addMouseListener(new EventoExportarJPG(controlador));
    	OP_EXPORTAR_GIF.addMouseListener(new EventoExportarGIF(controlador));
    	OP_EXPORTAR_PNG.addMouseListener(new EventoExportarPNG(controlador));
    	
    	OP_IMPRIMIR.addMouseListener(new EventoImprimir(contenedor));
    	
    	OP_VALIDAR_DIAGRAMA.addMouseListener(new EventoValidarDiagrama(controlador.getProyectoActual()));
    	OP_VALIDAR_PROYECTO.addMouseListener(new EventoValidarTodo(controlador.getProyectoActual()));
    	
    	OP_AYUDA.addMouseListener(new EventoMostrarAyuda());
    }
}
